 /**
 * 公用常量定义
 * 包含设施状态、楼层、类型等前后端共用的枚举和常量
 */

// ==================== 设施相关常量 ====================


  
  /**
   * 楼层选项
   */
  export const FLOOR_OPTIONS = [
    { label: '1F', value: '1F' },
    { label: '2F', value: '2F' },
    { label: '户外', value: 'OUTDOOR' }
  ]
  
  // ==================== 艺人相关常量 ====================
  
  /**
   * 艺人状态枚举
   */
  export enum ArtistStatus {
    ACTIVE = 'ACTIVE',       // 活跃
    INACTIVE = 'INACTIVE'    // 非活跃
  }
  
  /**
   * 艺人状态选项
   */
  export const ARTIST_STATUS_OPTIONS = [
    { label: '活跃', value: ArtistStatus.ACTIVE },
    { label: '非活跃', value: ArtistStatus.INACTIVE }
  ]
  
  // ==================== 演出相关常量 ====================
  
  /**
   * 演出状态枚举
   */
  export enum PerformanceStatus {
    SCHEDULED = 'SCHEDULED',   // 已安排
    ONGOING = 'ONGOING',       // 进行中
    COMPLETED = 'COMPLETED',   // 已完成
    CANCELLED = 'CANCELLED'    // 已取消
  }
  
  /**
   * 演出状态选项
   */
  export const PERFORMANCE_STATUS_OPTIONS = [
    { label: '已安排', value: PerformanceStatus.SCHEDULED },
    { label: '进行中', value: PerformanceStatus.ONGOING },
    { label: '已完成', value: PerformanceStatus.COMPLETED },
    { label: '已取消', value: PerformanceStatus.CANCELLED }
  ]
  
  // ==================== 用户相关常量 ====================
  
  /**
   * 用户状态枚举
   */
  export enum UserStatus {
    ACTIVE = 'ACTIVE',       // 活跃
    INACTIVE = 'INACTIVE',   // 非活跃
    BANNED = 'BANNED'        // 已封禁
  }
  
  /**
   * 用户状态选项
   */
  export const USER_STATUS_OPTIONS = [
    { label: '活跃', value: UserStatus.ACTIVE },
    { label: '非活跃', value: UserStatus.INACTIVE },
    { label: '已封禁', value: UserStatus.BANNED }
  ]
  
  /**
   * 角色状态枚举
   */
  export enum RoleStatus {
    ACTIVE = 'ACTIVE',       // 活跃
    INACTIVE = 'INACTIVE'    // 非活跃
  }
  
  /**
   * 角色状态选项
   */
  export const ROLE_STATUS_OPTIONS = [
    { label: '活跃', value: RoleStatus.ACTIVE },
    { label: '非活跃', value: RoleStatus.INACTIVE }
  ]
  
  // ==================== 徽章相关常量 ====================

/**
 * 徽章类型枚举
 */
export enum BadgeType {
  ACHIEVEMENT = 'ACHIEVEMENT', // 成就
  COLLECTION = 'COLLECTION',   // 收集
  SPECIAL = 'SPECIAL'          // 特殊
}
  
  /**
   * 徽章类型选项
   */
  export const BADGE_TYPE_OPTIONS = [
    { label: '成就', value: BadgeType.ACHIEVEMENT },
    { label: '收集', value: BadgeType.COLLECTION },
    { label: '特殊', value: BadgeType.SPECIAL }
  ]
  
  /**
   * 徽章条件类型枚举
   */
  export enum BadgeConditionType {
    VOTE_COUNT = 'VOTE_COUNT',           // 投票次数
    PERFORMANCE_ATTENDANCE = 'PERFORMANCE_ATTENDANCE', // 演出参与
    DAYS_ACTIVE = 'DAYS_ACTIVE',         // 活跃天数
    ARTIST_FOLLOW = 'ARTIST_FOLLOW'      // 艺人关注
  }
  
  /**
   * 徽章条件类型选项
   */
  export const BADGE_CONDITION_TYPE_OPTIONS = [
    { label: '投票次数', value: BadgeConditionType.VOTE_COUNT },
    { label: '演出参与', value: BadgeConditionType.PERFORMANCE_ATTENDANCE },
    { label: '活跃天数', value: BadgeConditionType.DAYS_ACTIVE },
    { label: '艺人关注', value: BadgeConditionType.ARTIST_FOLLOW }
  ]
  
  // ==================== 通知相关常量 ====================
  
  /**
   * 通知类型枚举
   */
  export enum NotificationType {
    PERFORMANCE = 'PERFORMANCE', // 演出
    VOTE = 'VOTE',               // 投票
    SYSTEM = 'SYSTEM',           // 系统
    PROMOTION = 'PROMOTION'      // 推广
  }
  
  /**
   * 通知类型选项
   */
  export const NOTIFICATION_TYPE_OPTIONS = [
    { label: '演出', value: NotificationType.PERFORMANCE },
    { label: '投票', value: NotificationType.VOTE },
    { label: '系统', value: NotificationType.SYSTEM },
    { label: '推广', value: NotificationType.PROMOTION }
  ]
  
  // ==================== 助手相关常量 ====================
  
  /**
   * 助手消息类型枚举
   */
  export enum AssistantMessageType {
    USER = 'USER',           // 用户消息
    ASSISTANT = 'ASSISTANT'  // 助手消息
  }
  
  /**
   * 助手消息格式枚举
   */
  export enum AssistantMessageFormat {
    TEXT = 'TEXT',           // 文本
    VOICE = 'VOICE',         // 语音
    IMAGE = 'IMAGE'          // 图片
  }
  
  // ==================== 系统配置相关常量 ====================
  
  /**
   * 配置类型枚举
   */
  export enum ConfigType {
    STRING = 'STRING',       // 字符串
    NUMBER = 'NUMBER',       // 数字
    BOOLEAN = 'BOOLEAN',     // 布尔值
    JSON = 'JSON'            // JSON
  }
  
  /**
   * 配置类型选项
   */
  export const CONFIG_TYPE_OPTIONS = [
    { label: '字符串', value: ConfigType.STRING },
    { label: '数字', value: ConfigType.NUMBER },
    { label: '布尔值', value: ConfigType.BOOLEAN },
    { label: 'JSON', value: ConfigType.JSON }
  ]
  
  // ==================== 工具函数 ====================
  type TagType = 'success' | 'danger' | 'warning' | 'info' | 'primary';

  
  /**
   * 获取艺人状态标签类型
   * @param status 艺人状态
   * @returns 标签类型
   */
  export function getArtistStatusTagType(status: ArtistStatus): TagType {
    const statusMap: Record<ArtistStatus, TagType> = {
      [ArtistStatus.ACTIVE]: 'success',
      [ArtistStatus.INACTIVE]: 'info'
    }
    return statusMap[status] || 'info' as TagType
  }
  
  /**
   * 获取艺人状态文本
   * @param status 艺人状态
   * @returns 状态文本
   */
  export function getArtistStatusText(status: ArtistStatus): string {
    const statusMap: Record<ArtistStatus, string> = {
      [ArtistStatus.ACTIVE]: '活跃',
      [ArtistStatus.INACTIVE]: '非活跃'
    }
    return statusMap[status] || status
  }
  
  /**
   * 获取演出状态标签类型
   * @param status 演出状态
   * @returns 标签类型
   */
  export function getPerformanceStatusTagType(status: PerformanceStatus): TagType {
    const statusMap: Record<PerformanceStatus, TagType> = {
      [PerformanceStatus.SCHEDULED]: 'info',
      [PerformanceStatus.ONGOING]: 'success',
      [PerformanceStatus.COMPLETED]: 'warning',
      [PerformanceStatus.CANCELLED]: 'danger'
    }
    return statusMap[status] || 'info' as TagType
  }
  
  /**
   * 获取演出状态文本
   * @param status 演出状态
   * @returns 状态文本
   */
  export function getPerformanceStatusText(status: PerformanceStatus): string {
    const statusMap: Record<PerformanceStatus, string> = {
      [PerformanceStatus.SCHEDULED]: '已安排',
      [PerformanceStatus.ONGOING]: '进行中',
      [PerformanceStatus.COMPLETED]: '已完成',
      [PerformanceStatus.CANCELLED]: '已取消'
    }
    return statusMap[status] || status
  }
  
  /**
   * 获取用户状态标签类型
   * @param status 用户状态
   * @returns 标签类型
   */
  export function getUserStatusTagType(status: UserStatus): TagType {
    const statusMap: Record<UserStatus, TagType> = {
      [UserStatus.ACTIVE]: 'success',
      [UserStatus.INACTIVE]: 'info',
      [UserStatus.BANNED]: 'danger'
    }
    return statusMap[status] || 'info' as TagType
  }
  
  /**
   * 获取用户状态文本
   * @param status 用户状态
   * @returns 状态文本
   */
  export function getUserStatusText(status: UserStatus): string {
    const statusMap: Record<UserStatus, string> = {
      [UserStatus.ACTIVE]: '活跃',
      [UserStatus.INACTIVE]: '非活跃',
      [UserStatus.BANNED]: '已封禁'
    }
    return statusMap[status] || status
  }
  
  /**
   * 获取徽章类型标签类型
   * @param type 徽章类型
   * @returns 标签类型
   */
  export function getBadgeTypeTagType(type: BadgeType): TagType {
    const typeMap: Record<BadgeType, TagType> = {
      [BadgeType.ACHIEVEMENT]: 'success',
      [BadgeType.COLLECTION]: 'warning',
      [BadgeType.SPECIAL]: 'danger'
    }
    return typeMap[type] || 'info' as TagType
  }
  
  /**
   * 获取徽章类型文本
   * @param type 徽章类型
   * @returns 类型文本
   */
  export function getBadgeTypeText(type: BadgeType): string {
    const typeMap: Record<BadgeType, string> = {
      [BadgeType.ACHIEVEMENT]: '成就',
      [BadgeType.COLLECTION]: '收集',
      [BadgeType.SPECIAL]: '特殊'
    }
    return typeMap[type] || type
  }
  
  /**
   * 获取徽章条件类型文本
   * @param conditionType 条件类型
   * @returns 条件类型文本
   */
  export function getBadgeConditionTypeText(conditionType: BadgeConditionType): string {
    const conditionTypeMap: Record<BadgeConditionType, string> = {
      [BadgeConditionType.VOTE_COUNT]: '投票次数',
      [BadgeConditionType.PERFORMANCE_ATTENDANCE]: '演出参与',
      [BadgeConditionType.DAYS_ACTIVE]: '活跃天数',
      [BadgeConditionType.ARTIST_FOLLOW]: '艺人关注'
    }
    return conditionTypeMap[conditionType] || conditionType
  }
  
  /**
   * 获取通知类型标签类型
   * @param type 通知类型
   * @returns 标签类型
   */
  export function getNotificationTypeTagType(type: NotificationType): TagType {
    const typeMap: Record<NotificationType, TagType> = {
      [NotificationType.PERFORMANCE]: 'success',
      [NotificationType.VOTE]: 'warning',
      [NotificationType.SYSTEM]: 'info',
      [NotificationType.PROMOTION]: 'primary'
    }
    return typeMap[type] || 'info' as TagType
  }
  
  /**
   * 获取通知类型文本
   * @param type 通知类型
   * @returns 类型文本
   */
  export function getNotificationTypeText(type: NotificationType): string {
    const typeMap: Record<NotificationType, string> = {
      [NotificationType.PERFORMANCE]: '演出',
      [NotificationType.VOTE]: '投票',
      [NotificationType.SYSTEM]: '系统',
      [NotificationType.PROMOTION]: '推广'
    }
    return typeMap[type] || type
  }
  
  /**
   * 获取配置类型标签类型
   * @param type 配置类型
   * @returns 标签类型
   */
  export function getConfigTypeTagType(type: string): TagType {
    const typeMap: Record<string, TagType> = {
      [ConfigType.STRING]: 'info',
      [ConfigType.NUMBER]: 'success',
      [ConfigType.BOOLEAN]: 'warning',
      [ConfigType.JSON]: 'info'
    }
    return typeMap[type] || 'info' as TagType
  }
  
  /**
   * 获取配置类型文本
   * @param type 配置类型
   * @returns 类型文本
   */
  export function getConfigTypeText(type: string): string {
    const typeMap: Record<string, string> = {
      [ConfigType.STRING]: '字符串',
      [ConfigType.NUMBER]: '数字',
      [ConfigType.BOOLEAN]: '布尔值',
      [ConfigType.JSON]: 'JSON'
    }
    return typeMap[type] || type
  }